﻿#ifndef RESETPASS_DIALOG_H
#define RESETPASS_DIALOG_H

#include <QDialog>
#include <httpmgr.h>
#include "rsacrypt.h"
#include "visiablelabel.h"
namespace Ui {
class ResetPass_Dialog;
}

class ResetPass_Dialog : public QDialog
{
    Q_OBJECT

public:
    explicit ResetPass_Dialog(QWidget *parent = nullptr);
    ~ResetPass_Dialog();

signals:
    void sig_returnLogin();
private:
    Ui::ResetPass_Dialog *ui;

    void showTip(QString str,bool is_ok);

    RsaCrypt *rsacrypt_;
    //关联容器，存储ReqId和对应的处理函数
    QMap<ReqId,std::function<void(const QJsonObject &jsonObj)>>_handlers;

    //存储Edit输入格式报错
    QMap<TipErr, QString> _tip_errs;

    //添加/删除Tiperr
    void AddTipErr(TipErr te, QString tips);
    void DelTipErr(TipErr err);
    //初始化绑定ReqId和对应的处理函数
    void initHandlers();

    //check函数
    bool checkUserValid();
    bool checkEmailValid();
    bool checkPassValid();
    bool checkConfirmValid();
    bool checkVarifyValid();
private slots:
    void SlotGetCode();
    void SlotResetPass();

    void SlotPassVisiable(Visiablelabel::LabelState state);
    void SlotConfirmVisiable(Visiablelabel::LabelState state);
    void slot_reset_mod_finish(ReqId id,QString str,ErrorCodes er);
};

#endif // RESETPASS_DIALOG_H
